Debugging is an important process in developing computer programs. A so-called “bug” is an error, flaw, failure, or fault in a computer program (referred to as “program” hereinafter) or system. A bug may produce an incorrect or unexpected result, or cause the program or system to behave in unintended ways. Bugs in the program can be detected and corrected through a debugging process. One way of performing the debugging is, when the program is running in a computer, to examine a region in a memory of the computer which stores information corresponding to the program. The information stored in this memory region can be retrieved, or so-called “dumped,” as a file. Such a file is called a core dump file, also known as a crash dump file, a checkpoint file or a snapshot file. The core dump file corresponds to the program and/or a corresponding operating system, and reflects the execution of the program.
The debugging process may be performed by a debugger program (referred to as “debugger” hereinafter) running in the same computer as the one that runs the program. However, since the debugger consumes resources (such as memory space, bus bandwidth and processor time, etc.) of the computer, running the debugger may affect the execution of the program being debugged. For avoiding possible interferences brought by a debugger that runs in the computer concurrently with the program being debugged, debugging the program remotely from another computer becomes more desirable. This is done by providing a core dump file generated by the program-running computer (referred to as “remote computer” hereinafter) to the other computer (referred to as “host computer” hereinafter) and debugging the program by analyzing the core dump file in the host computer.
However, the overall size of a core dump file of a program can be very large, e.g. more than 100 Mega Bytes (MBs) or even over 1 Giga Bytes (GBs). Transferring the core dump file from the remote computer to the host computer may consume a lot of bandwidth, and may take a very long transfer time.